package com.game.autoTool.project.web.common;

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;

public class MouseKeyboardControl {
    public static void main(String[] args) {
        try {
            // 创建 Robot 对象
            Robot robot = new Robot();

            // 延迟 2 秒，以便有时间切换到目标窗口
            robot.delay(2000);

            // 操作鼠标
            // 移动鼠标到指定位置
            robot.mouseMove(500, 500);
            // 按下鼠标左键
            robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
            // 释放鼠标左键
            robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

            // 延迟 1 秒
            robot.delay(1000);

            // 操作键盘
            // 按下键盘上的 A 键
            robot.keyPress(KeyEvent.VK_A);
            // 释放键盘上的 A 键
            robot.keyRelease(KeyEvent.VK_A);


            // 起始坐标 (x1, y1)
            int x1 = 500, y1 = 500;
            // 结束坐标 (x2, y2)
            int x2 = 800, y2 = 800;

            // 1. 移动鼠标到起始位置
            robot.mouseMove(x1, y1);
            robot.delay(200);

            // 2. 按下鼠标左键（开始拖动）
            robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
            robot.delay(200); // 短暂停顿，确保按下生效

            // 3. 模拟拖动过程（逐步移动）
            int steps = 20; // 拖动过程的步数
            for (int i = 1; i <= steps; i++) {
                // 计算中间点坐标
                int x = x1 + (x2 - x1) * i / steps;
                int y = y1 + (y2 - y1) * i / steps;

                robot.mouseMove(x, y);
                robot.delay(10); // 每步之间的延迟
            }

            // 4. 释放鼠标左键（结束拖动）
            robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

            // 鼠标右键点击
            robot.mouseMove(500, 500); // 移动鼠标到指定位置
            robot.delay(200);
            robot.mousePress(InputEvent.BUTTON3_DOWN_MASK); // 按下鼠标右键
            robot.delay(200);
            robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK); // 释放鼠标右键

            // 鼠标滚轮向上滚动
            robot.delay(1000);
            robot.mouseWheel(3); // 向上滚动 3 个单位

            // 鼠标滚轮向下滚动
            robot.delay(1000);
            robot.mouseWheel(-3); // 向下滚动 3 个单位


        } catch (AWTException e) {
            e.printStackTrace();
        }
    }
}